/*
 * Copyright 2010,2012 Michael Nitsche
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package de.mnit.schnipsel.swt.editor;

import org.eclipse.swt.widgets.Composite;

import de.mnit.basis.daten.konstant.position.POSITION_H;
import de.mnit.basis.daten.typ.zeit.Datum;
import de.mnit.basis.daten.typ.zeit.S_Zeitpunkt;
import de.mnit.basis.daten.typ.zeit.Zeitpunkt;
import de.mnit.basis.daten.typ.zeit.format.FORMAT_DATUM;
import de.mnit.basis.daten.typ.zeit.format.FORMAT_ZEIT;
import de.mnit.basis.swt.anw.A_MN_Gruppe;
import de.mnit.basis.swt.element.S_SWT_Komponente;
import de.mnit.basis.swt.element.steuer.SWT_Label;
import de.mnit.basis.swt.layout.LayoutMax;
import de.mnit.basis.sys.sprache.S;

/**
 * @author Michael Nitsche
 * 24.09.2010	Erstellt
 */
public class K_EditorAnzeigeAlter extends A_MN_Gruppe<K_EditorAnzeigeAlter> {

	private static final S s=new S(K_EditorAnzeigeAlter.class);
	public final SWT_Label label= new SWT_Label("").s1_POSITION(POSITION_H.RECHTS);


	public void setze(S_Zeitpunkt erstellt, S_Zeitpunkt geaendert, int laenge) {
		S_Zeitpunkt zp=geaendert;
		int diffStd= zp==null ? 0 : zp.diffStd(Zeitpunkt.neu());

		String text="";
		if(zp==null)
			text="";
		else if(zp.gDatum().istGleich(Datum.neu())) //Heute
			text="Heute, "+zp.gUhrzeit().zuText(FORMAT_ZEIT.GRUPPE_HHMM);
		else if(Datum.neu().diffTage(zp.gDatum())==-1) //Gestern
			text="Gestern, "+zp.gUhrzeit().zuText(FORMAT_ZEIT.GRUPPE_HHMM);
		else if(diffStd<=30*24)
			text=diffStd/24+" "+s.t("Tage");
		else if(diffStd/24/30==1)
			text="1 "+s.t("Monat");
		else if(diffStd<720*24)
			text=diffStd/24/30+" "+s.t("Monate");
		else if(diffStd/24/365==1)
			text="1 "+s.t("Jahr");
		else
			text=diffStd/24/365+" Jahre";
		this.label.sText(text+"  ");

		Object[] tipFormat=new Object[] {
			FORMAT_DATUM.TAG_2,
			".",
			FORMAT_DATUM.MONAT_2,
			".",
			FORMAT_DATUM.JAHR_4,
			" - ",
			FORMAT_ZEIT.STD_2,
			":",
			FORMAT_ZEIT.MIN_2,
		};

		String sErstellt = erstellt==null ? "" : erstellt.zuText(tipFormat);
		String sGeaendert= geaendert==null ? "" : geaendert.zuText(tipFormat);
		String sLaenge	 = iLaenge(laenge);
		String tip=
			s.t("Erstellt")+":\n"+
			sErstellt+"\n"+
			s.t("Geändert")+":\n"+
			sGeaendert+"\n"+
			s.t("Länge")+":\n"+
			sLaenge;
		this.label.sTip(tip);
	}

//	ERZEUGEN

	protected S_SWT_Komponente<?, ? extends Composite> layout() {
		return LayoutMax.neu(this.label);
	}

	protected void initStyle() {
		this.label.sTip(s.t("Geändert vor"));
	}

	protected void initEvents() {
	}

	private String iLaenge(int laenge) {
//		if(laenge > 1024)
//			return (laenge/1024)+" k";
		return ""+laenge;
	}

}
